# 2025.01.31力扣网刷题
# 反转字符串 II——双指针、字符串——简单
# 给定一个字符串 s 和一个整数 k，从字符串开头算起，每计数至 2k 个字符，就反转这 2k 字符中的前 k 个字符。
# 如果剩余字符少于 k 个，则将剩余字符全部反转。
# 如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。
# 示例 1：
# 输入：s = "abcdefg", k = 2
# 输出："bacdfeg"
# 示例 2：
# 输入：s = "abcd", k = 2
# 输出："bacd"
# 提示：
# 1 <= s.length <= 10^4
# s 仅由小写英文组成
# 1 <= k <= 10^4

class Solution(object):
    def reverseStr(self, s, k):
        """
        :type s: str
        :type k: int
        :rtype: str
        """
        s = list(s)
        length = len(s)
        begin, end = 0, 2 * k
        ans = []
        while end < length:
            ans += reversed(s[begin:begin + k])
            ans += s[begin + k: end]
            begin += 2 * k
            end += 2 * k
        ans += reversed(s[begin: begin + k])
        ans += s[begin + k::]
        return ''.join(ans)

